Non-volatile memory devices such as Solid State Drives (SSDs) are finding new applications in consumer electronics. For example, they are replacing Hard Disk Drives (HDDs), which typically comprise rapidly rotating disks (platters). Non-volatile memories, sometimes referred to as ‘flash memories’ or ‘flash memory devices’ (e.g., NAND and NOR flash memory devices), are used in media storage, cameras, mobile phones, mobile computers, laptop computers, USB flash drives, etc. Non-volatile memory can provide a relatively reliable, compact, cost-effective, and easily accessible method of storing data when the power is off.
NAND flash devices are generally made up of blocks comprising a number of pages. Each page can comprise multiple NAND flash cells, e.g., hundreds or thousands. A NAND flash cell may be a single level cell (SLC) flash device that can represent one bit per cell, or a multi-level cell (MLC) flash device that can represent two or more bits per cell. For example, a triple-level cell (TLC) NAND flash device can represent three bits per cell. Each cell can hold a voltage to indicate a value stored in physically identical flash cells. For example, an SLC flash device can store one bit of data per cell, e.g., “1” or “0.” A triple level cell (TLC) can store three bits of data per cell and hence can support eight possible states, e.g., “111”, “110”, “101”, “100”, “011”, “010”, “001” or “000.” It will be understood that the states may represent charge states or voltage levels with reference to the flash memory implementation. Hence, TLC NAND flash devices using multiple levels per cell can be more cost-efficient because the TLC NAND flash devices can allow more bits to be stored as compared to the SLC flash devices, and are generally used for large capacity grade memory.
The TLC NAND flash devices may generally require multi-pass programming which can be complex. In most instances, a TLC NAND flash device may require a specific programming order to transfer the same data to TLC NAND flash device in multiple passes. For example, a specific program order may be required to program the pages within one block. Random page programming may not be allowed. In some instances, a dedicated buffer may need to be allocated for the TLC NAND flash device to store the intermediate data for next step programming. However, the system bandwidth may suffer as the intermediate data has to be retrieved from the buffer to complete programming the pages in the TLC NAND flash device.